Amazon Connect 公式ブートキャンプをやってみよう! – STEP 5「メニューをDTMFからAmazon Lexへ変更」
みなさん、こんにちは!
福岡オフィスの青柳です。
AWSから公開されている「Amazon Connect Bootcamp」を題材に「ステップ・バイ・ステップ」で構築方法を解説する連載記事の第6回目 (最終回) です。
- STEP 0:「準備編」
- STEP 1:「メニューを備えた基本的な問い合わせフロー」
- STEP 2:「発信者番号による顧客情報の照会と本人確認」
- STEP 3:「新規問い合わせ時のコールバックの実装」
- STEP 4:「既存問い合わせ対応の実装」
- STEP 5:「メニューをDTMFからAmazon Lexへ変更」 ← 当記事です
前回までのステップで「コールセンターシステム」の一通りの機能を構築しました。
今回は、これまでプッシュボタンのキー操作でメニュー選択を行っていた部分を、Amazon Lexを使った音声認識によるメニュー選択へ変更してみます。
今回の構築範囲
今回は、メニュー選択で顧客が話した言葉を音声認識で解釈するための「Amazon Lex ボット」を構築します。
また、フロー「Flow 5:メニューの選択」の処理内容を一部変更します。
Amazon Lexボット環境の構築
Amazon Lexには「V1」と「V2」の2種類のAPIバージョンが存在します。
今回は「V2」を使用します。
AWSマネジメントコンソールの「Amazon Lex」画面を開いた時に下図のように「V1」の画面になっている場合は、「Switch to new Lex V2 console」を選択して「V2」の画面に切り替えておきます。
Lexボットを作成する
Lexボット一覧画面で「ボットを作成」をクリックします。
ボットの情報を入力していきます。
- 作成方法: 「作成」を選択
- ボット名: 「ConnectBootCamp」と入力
- ランタイムロール: 「基本的なAmazon Lex権限を持つロールを作成します」を選択
- 児童オンラインプライバシー保護法 (COPPA): 「いいえ」を選択
- アイドルセッションタイムアウト: 「1分」と指定
- 言語を選択: 「日本語 (JP)」を選択
- 音声による対話: 「Mizuki」を選択
その他の項目はデフォルトのままとします。
Lexボットの「インテント」を作成
Lexボットを作成すると、以下のような「インテント」作成画面になります。
「インテント」とは、ユーザーが行いたいアクションの単位のことです。
今回Amazon Lexで実現しようとしている「メニュー選択」であれば、
- Sales: 購入前の相談 (をしたい)
- Inquiriers: 新規の問い合わせ (をしたい)
- Support: 以前問い合わせた件について再問い合わせ (したい)
という3種類のインテントを作成する必要があります。
それでは、まず1つ目のインテント「Sales」を作成していきましょう。
インテントの基本情報を設定します。
- インテント名: 「Sales」と入力
次に、「サンプル発話」を設定します。
「サンプル発話」とは、ユーザーがLexボットにインテントを伝えるためのキーワードです。
下の入力欄に「購入したい」と入力して、「発話を追加」をクリックします。
サンプル発話「購入したい」が追加されました。
同様にして、あと2つ「商品について教えて」「価格を知りたい」というサンプル発話を追加します。
今回は、その他の設定項目はデフォルトのままとします。
画面下部の「インテントを保存」をクリックして、1つ目のインテントの作成を完了します。
インテントが作成 (保存) されました。
同様にして、残り2つのインテントも作成します。
一旦「インテントリスト」画面に戻って、「インテントの追加」をクリックします。 (作成した覚えのない「FallbackIntent」というインテントが表示されていますが、とりあえず無視してください)
順に以下のようにインテントを作成します。
- 「新規問い合わせ」のインテント
- インテント名: 「Inquiries」
- サンプル発話:
- 「問い合わせたい」
- 「質問したい」
- 「分かりません」
- 「既存問い合わせ」のインテント
- インテント名: 「Support」
- サンプル発話:
- 「先日問い合わせたのですが」
- 「この間の件について」
計3つのインテントが作成されました。
Lexボットの「構築 (ビルド)」を行う
Lexボットにインテントを追加した後は、ボットの「ビルド」を行う必要があります。
インテントを作成する際に「サンプル発話」をいくつか設定したと思いますが、サンプル発話はあくまで「サンプル」です。 実際はサンプル通りの発話でなくとも、Lexボットが「同じ意図を持つ発話だ」と類推すれば、それはインテントとして認識されます。
例えば「Sales」インテントには
- 「購入したい」
- 「商品について教えて」
- 「価格を知りたい」
という3つのサンプル発話が登録されています。
サンプル発話の文言を含む「商品を購入したいのですが」という発話は当然「Sales」インテントと認識されますが、「品物を買いたいんだけど」という発話もLexボットは「Sales」インテントとして認識してくれます。
ただし、Lexボットは何もしなくても人間のように「同じ意図を持つ発話」を類推できる訳ではなくて、機械学習を行い「学習済みモデル」を作成する必要があります。 つまり、この作業がLexボットの「構築 (ビルド)」という訳です。
という訳で、ボットの設定を変更した後は「構築 (ビルド)」が必要ということを覚えておきましょう。
ビルドを行うには、画面下部の「構築」をクリックします。
数分待つとビルドが完了します。
これで、Lexボットを使う準備ができました。
Lexボットの「テスト」を行う
作成したLexボットをAmazon Connectに組み込む前に、テストをしておきましょう。
「構築」が完了していることを確認して、画面下部の「テスト」をクリックします。
テスト用のダイアログが表示されます。
入力欄に「商品を購入したいのですが」と入力して「Enter」キーを押します。
Lexボットが発話からインテントを類推する動作が、チャットの会話形式で表示されます。 「インテント Sales が履行されました」と表示されれば、無事に意図した通りのインテントとして類推されたということです。
同様にして「品物を買いたいんだけど」と入力しても「Sales」インテントとして類推されることを確認しましょう。
残りのインテント「Inquiries」「Support」についてもテストを行ってみてください。
また、Lexボットのテストは、キーボートからの文字入力だけでなく、入力欄の「マイク」アイコンをクリックすることで音声入力でもテストが行えます。 こちらも試してみてください。
Amazon ConnectがLexボットを呼び出せるように設定する
作成したLexボットは、そのままではAmazon Connectから利用することはできません。
「STEP 2:発信者番号による顧客情報の照会と本人確認」で顧客情報を紹介するLambda関数をAmazon Connectインスタンスに登録したことを覚えていますか?
同様の手順で、LexボットもAmazon Connectインスタンスへ登録する必要があります。
AWSマネジメントコンソールでAmazon Connectインスタンスを選択して、画面左側のメニューから「問い合わせフロー」を選択します。
すぐ下に「Amazon Lex」の設定項目がありますので、以下のように選択します。
- リージョン: 「アジアパシフィック: 東京」を選択
- ボット: 「ConnectBootCamp」を選択
- エイリアス: 「TestBotAlias」を選択
「+ Amazon Lexボットを追加」をクリックします。
※ 「『エイリアス』って何?」と思われたかもしれませんが、ここでは「デフォルトで作成されているエイリアスを指定する」くらいの認識で構いません。(エイリアスについての詳細の説明は割愛します)
Lexボットが登録されたことを確認します。
これで、Amazon Connectインスタンスの問い合わせフローからLexボットを呼び出すための準備ができました。
フローの構築
では、ここからはフローの構築に入っていきます。
Flow 5「メニューの選択」
フローの全体図はこのようになります。
今回は、番号が付いているブロック(1)(2)のみ変更を行います。
(1) 「操作」-「顧客の入力を取得する」
設定項目が多いため、前半と後半に分けます。
以下の設定項目の値を変更してください。
- テキスト: 「購入前のご相談は1を、・・・」→「ご用件をお話しください」に書き換え
これまではキー入力向けに「1」「2」「3」それぞれのボタンの説明をしていましたが、音声入力になりますのでシンプルなアナウンスになりました。
- 入力方法: 「DTMF」→「Amazon Lex」に変更
プッシュボタン入力 (DTMF) から「Amazon Lex」に変更します。
呼び出すAmazon Lexボットの情報を指定します。
- Lexボット: 「Select a Lex bot」を選択
- 名前: 「ConnectBootCamp (アジアパシフィック: 東京)」を選択
- エイリアス: 「TestBotAlias」を選択
メニューの選択肢と結び付ける「インテント」を指定します。
- インテント: 「別のインテントの追加」をクリックして、以下の値を入力 (3回繰り返す)
- 「Sales」
- 「Inquiries」
- 「Support」
これで、顧客が話し掛けた言葉をLexボットが類推して、いずれかのインテントに振り分けます。
もしLexボットがインテントを類推できなかった場合は、出力先「デフォルト」に遷移することになります。
(2) 「操作」-「プロンプトの再生」
このブロックでは、顧客がメニュー選択のキー操作を間違えたりタイムアウトになった場合のアナウンスを流すものでしたね。
メニュー選択の方法がキー操作から音声入力に変わりましたので、アナウンスの内容も変更しておきましょう。
- テキスト: 「入力された番号が確認できませんでした。」→「ご用件が聞き取れませんでした。」に変更
これでフローの変更が終わりました。
実際に電話を掛けて動作をテストする
さて、これで「STEP 5:メニューをDTMFからAmazon Lexへ変更」の全ての設定が終わりました。
例によって、実際に電話を掛けてみて動作を確認しましょう。
テストシナリオ:音声入力メニューでいろいろ喋ってみる
本人確認までのプロセスは割愛します。
新しくなったメニューで「ご用件をお話しください」と聞かれたら、要件を言葉で話してみましょう。
まずは、Lexボットで設定した「サンプル発話」に含まれる文言で話してみます。
- 「購入したいのですが」→「Sales」キューへ転送される
- 「使い方が分かりません」→「Inquiry」キューへ転送される
- 「先日問い合わせたのですが」→「Support」キューへ転送される
このように、意図通りのインテントが認識され、適切なキューへ転送されると思います。 (もし上手く判定されない場合は、ゆっくり・はっきり話してみてください)
次に、「サンプル発話」に含まれない言葉を使って話してみます。
- 「品物を買いたいんだけど」
- 「価格の問い合わせです」
- 「新製品の情報を聞きたい」
これらは全て「購入前相談」として認識して欲しいところですが・・・
どうでしょう? 上手く認識されたものもあれば、違うインテントで認識されてしまったもの、いずれのインテントとしても認識されず「ご用件が聞き取れませんでした」になってしまったものもあると思います。
音声入力の認識率を上げるには、サンプル発話に登録する内容を精査したり、より多くのサンプル発話を登録する必要があります。 今回の「Amazon Lexを使った音声入力メニュー」の実装は、実用レベルにはまだまだ達していないかもしれませんが、Amazon Connectに対話型のメニューを組み込む手法について理解できたのではないでしょうか。
おわりに
今回は「メニューをDTMFからAmazon Lexへ変更」の構築を行いました。
全6回に渡って「Amazon Connect公式ブートキャンプ」を題材にコールセンターシステムの構築手順を解説してきました。
完成したシステムにはAmazon ConnectとAWS各種サービスを組み合わせた様々な機能の実装手法が盛り込まれています。
この中から、皆さんが構築するコールセンターシステムで必要としている機能をチョイスして組み込むのも良いですし、顧客に対するユーザーエクスペリエンスやコールセンター運営の観点などから改良した方が良い点を見つけてフローを修正するのも良いでしょう。
DevelopersIOでは今後もAmazon Connectに関して役に立つブログ記事をガンガン発信して行きますので、「#Amazon Connect」タグの記事をチェックしてみてくださいね。
Amazon Connect の記事一覧 | DevelopersIO
https://dev.classmethod.jp/tags/amazon-connect/